package com.zuipin.interview.baiyapeng.parse;

import com.zuipin.interview.baiyapeng.parse.exception.ParseException;
import com.zuipin.interview.baiyapeng.util.Pair;

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class TimeParser {

    public static Pair<BigDecimal> parseTime(String str) throws ParseException {
        if (str == null) {
            return null;
        }
        /** 匹配格式,例: 08:00~09:00 **/
        String regex = "(([01][0-9])|(2[0-3])):[0-5][0-9]\\~(([01][0-9])|(2[0-3])):[0-5][0-9]";
        if (str.matches(regex)) {
            BigDecimal bg1 = new BigDecimal(str.substring(0, 2)).add(new BigDecimal(str.substring(3, 5)).divide(new BigDecimal("60")));
            BigDecimal bg2 = new BigDecimal(str.substring(6, 8)).add(new BigDecimal(str.substring(9)).divide(new BigDecimal("60")));
            if (bg1.compareTo(bg2) < 0) {
                return new Pair<>(bg1, bg2);
            } else {
                return new Pair<>(bg2, bg1);
            }
        } else {
            throw new ParseException("时间格式错误");
        }
    }

    public static String toStr(BigDecimal bg) {
        if (bg == null) {
            return "";
        }
        BigDecimal[] r = bg.divideAndRemainder(new BigDecimal("1"));
        DecimalFormat df = new DecimalFormat("00");
        return df.format(r[0]) + ":" + df.format(r[1].multiply(new BigDecimal("60")));
    }

    public static String toStr(BigDecimal bg1, BigDecimal bg2) {
        return toStr(bg1) + "~" + toStr(bg2);
    }
}
